package com.fidelizarte.ejb.servicio.fromend.impl;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.log4j.Logger;

import javax.ejb.EJB;
import javax.ejb.Remote;
//import javax.ejb.LocalBean;
//import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;

//import net.sf.ehcache.Cache;

import com.fidelizarte.common.util.SeguridadesException;
import com.fidelizarte.common.util.UtilAplication;
import com.fidelizarte.ejb.persistence.dao.impl.CampaniaDAO;
import com.fidelizarte.ejb.persistence.dto.CampaniaDTO;
import com.fidelizarte.ejb.persistence.entities.Campania;
//import com.fidelizarte.ejb.servicio.cache.EHCacheManager;
import com.fidelizarte.ejb.servicio.frontend.ServicioCampaniaRemote;
import com.fidelizarte.ejb.servicio.frontend.ServicioUsuarioRemote;

/**
 * Session Bean implementation class ServicioCampaniaImpl
 */
@Stateless
@Remote(ServicioCampaniaRemote.class)
public class ServicioCampaniaImpl implements ServicioCampaniaRemote {
	private final Logger log = Logger.getLogger(ServicioCampaniaImpl.class);
	@EJB
	private CampaniaDAO campaniaDAO;

	private Campania campaniasE;

	private List<CampaniaDTO> campaniaDTOs = new ArrayList<CampaniaDTO>();
	private CampaniaDTO campaniaDTO = new CampaniaDTO();

	/**
	 * Default constructor.
	 */
	public ServicioCampaniaImpl() {
		// TODO Auto-generated constructor stub
	}

	/**
	 * devuelve lista de campanias por idEmpresa
	 */

	@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
	public List<CampaniaDTO> getCampania(Integer idCampania) {
		log.debug("Dentro del metodo getCampania de ServicioCampaniaImpl remoto");
		// Cache manager = EHCacheManager.getCache();
		// if (!manager.isElementInMemory(ConstantesCache.CacheTecnologias)) {
		// ArrayList<CampaniaDTO> campanias = new ArrayList<CampaniaDTO>();
		campaniasE = campaniaDAO.buscarPorId(idCampania);
		System.out.println("Nombre de la Campania :"
				+ campaniasE.getNombreCampania());
		campaniaDTO.idCampania = campaniasE.getIdCampania();
		campaniaDTO.nombreCampania = campaniasE.getNombreCampania();
		campaniaDTOs.add(campaniaDTO);
		return (List<CampaniaDTO>) campaniaDTOs;
		// campaniaDTO.idCampania=campaniasE.getIdCampania();
		/*
		 * Uso de procedimientos almacenados Query q =
		 * em.createNamedQuery("GeoportalTecnologiaProcedureGetByIdVisor");
		 * q.setParameter("idVisor", idVisor);
		 * 
		 * 
		 * for (Object ed : q.getResultList()) { GeoportalTecnologia tecnologia
		 * = (GeoportalTecnologia) ed; Tecnologia message = new
		 * Tecnologia(tecnologia.getNombre(), idVisor, (int)
		 * tecnologia.getId()); tecnologias.add(message); } Element cacheElement
		 * = new Element( ConstantesCache.CacheTecnologias, tecnologias);
		 * manager.put(cacheElement); } return (List<Tecnologia>)
		 * manager.get(ConstantesCache.CacheTecnologias).getValue();
		 */

	}

	@Override
    @TransactionAttribute (TransactionAttributeType.REQUIRED)
    public boolean setCampania(String nombreCampania, String descripcion,
    		Integer tipoCampania, String fechaInicio, String fechaCierre, Integer empresaResponsable,
    		Integer responsable)throws SeguridadesException{
    	log.info("metodo setCampania session bean");
		System.out.println("nombre campania = "+ nombreCampania);
		System.out.println("fecha campania = "+ fechaInicio);
		Date FechaInicioDate=UtilAplication.obtenerFechaDeString(fechaInicio);
		Date FechaCierreDate=UtilAplication.obtenerFechaDeString(fechaCierre);	
			try {
				
				
				campaniaDAO.setCampania(nombreCampania, descripcion, tipoCampania, FechaInicioDate, FechaCierreDate, empresaResponsable, responsable);
			
				
				} catch (RuntimeException e) {
					e.getMessage();	
				}
				
			
		    //return Boolean.getBoolean(ConstantesApplication.TRANSACCION_EXITOSA); 
				return true;
		    }
}
